﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using br.com.SistemaChamados.Enum;
using br.com.SistemaChamados.Model;
using br.com.SistemaChamados.DAO;
using System.Data;

namespace br.com.SistemaChamados.Controller
{
    public class AnnexController
    {
        /// <summary>
        /// Método para inserir um anexo na base de dados
        /// </summary>
        /// <param name="annex">Anexo a ser inserido</param>
        /// <returns>EnumCRUDState</returns>
        public EnumCRUDState InsertAnnex(Annex annex)
        {
            EnumCRUDState resultAnnex = EnumCRUDState.SQL_NOTHING;
            try
            {
                AnnexDAO annexDAO = new AnnexDAO();
                resultAnnex = annexDAO.InsertAnnex(annex);
            }
            catch (Exception ex)
            {
                resultAnnex = EnumCRUDState.SQL_ERROR;
                throw ex;
            }
            return resultAnnex;
        }

        /// <summary>
        /// Método para remover um anexo da base de dados
        /// </summary>
        /// <param name="annex">Anexo a ser removido</param>
        /// <returns>EnumCRUDState</returns>
        public EnumCRUDState DeleteAnnex(Annex annex)
        {
            EnumCRUDState resultAnnex = EnumCRUDState.SQL_NOTHING;
            try
            {
                resultAnnex = AnnexDAO.DeleteAnnex(annex);
                resultAnnex = EnumCRUDState.SQL_SUCCESS;
            }
            catch (Exception ex)
            {
                resultAnnex = EnumCRUDState.SQL_ERROR;
                throw ex;
            }
            return resultAnnex;
        }

        /// <summary>
        /// Método para pegar o anexo de um determinado chamado
        /// </summary>
        /// <param name="call">O chamado do qual se deseja obter os anexos</param>
        /// <returns>Annex</returns>
        public Annex GetAnnexByCall(Call call)
        {
            Annex resultAnnex = null;
            try
            {
                resultAnnex = AnnexDAO.GetAnnexByCall(call);
                if (resultAnnex != null)
                {
                    return resultAnnex;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                return null;
                throw ex;
            }
        }

        public AnnexController()
        {

        }
    }
}